/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package social.p2p.model;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.*;

/**
 *
 * @author cadmilo
 */
@Entity
@Table(name = "FOTO")
@NamedNativeQueries({
    @NamedNativeQuery(name = "Foto.selectAll", query = "Select * from foto", resultClass = Foto.class),
    @NamedNativeQuery(name = "Foto.selectAllLocal", query = "Select * from foto where descargada=false", resultClass = Foto.class),
    @NamedNativeQuery(name = "Foto.selectAllRemote", query = "Select * from foto where descargada=true", resultClass = Foto.class),
    @NamedNativeQuery(name = "Foto.getFotoData", query = "Select * from foto where ID=?", resultSetMapping = "onlyFoto")
})
public class Foto implements Serializable {

    private static final long serialVersionUID = 1L;
    @Column(name = "ID")
    private String id;
    @Id
    @Basic(optional = false)
    @Column(name = "USER_ID")
    private String userId;
    @Lob
    @Column(name = "FOTO")
    private byte[] foto;
    @Lob
    @Column(name = "FOTO_1")
    private byte[] foto1;
    @Lob
    @Column(name = "FOTO_2")
    private byte[] foto2;
    @Column(name = "TIEMPO_REGISTRO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date tiempoRegistro;
    @Column(name = "UTC_REGISTRO")
    private Integer utcRegistro;
    @Column(name = "TIEMPO_DESCARGA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date tiempoDescarga;
    @Column(name = "UTC_DESCARGA")
    private Integer utcDescarga;
    @Column(name = "ANCHO")
    private Integer ancho;
    @Column(name = "ALTO")
    private Integer alto;
    @Column(name = "TAMANIO")
    private Double tamanio;
    @Column(name = "PERSONAS")
    private String personas;
    @Column(name = "TAGS")
    private String tags;
    @Column(name = "TIPO")
    private String tipo;
    @Column(name = "DESCARGADA")
    private boolean descargada;
    @Column(name = "AFINIDAD")
    private String afinidad;

    
    
    public Foto() {
    }

    public Foto(String userId) {
        this.userId = userId;
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserId() {
        return userId;
    }

    public void setUserId(String userId) {
        this.userId = userId;
    }

    public byte[] getFoto() {
        return foto;
    }

    public void setFoto(byte[] foto) {
        this.foto = foto;
    }

    public byte[] getFoto1() {
        return foto1;
    }

    public void setFoto1(byte[] foto1) {
        this.foto1 = foto1;
    }

    public byte[] getFoto2() {
        return foto2;
    }

    public void setFoto2(byte[] foto2) {
        this.foto2 = foto2;
    }

    public Date getTiempoRegistro() {
        return tiempoRegistro;
    }

    public void setTiempoRegistro(Date tiempoRegistro) {
        this.tiempoRegistro = tiempoRegistro;
    }

    public Integer getUtcRegistro() {
        return utcRegistro;
    }

    public void setUtcRegistro(Integer utcRegistro) {
        this.utcRegistro = utcRegistro;
    }

    public Date getTiempoDescarga() {
        return tiempoDescarga;
    }

    public void setTiempoDescarga(Date tiempoDescarga) {
        this.tiempoDescarga = tiempoDescarga;
    }

    public Integer getUtcDescarga() {
        return utcDescarga;
    }

    public void setUtcDescarga(Integer utcDescarga) {
        this.utcDescarga = utcDescarga;
    }

    public Integer getAncho() {
        return ancho;
    }

    public void setAncho(Integer ancho) {
        this.ancho = ancho;
    }

    public Integer getAlto() {
        return alto;
    }

    public void setAlto(Integer alto) {
        this.alto = alto;
    }

    public Double getTamanio() {
        return tamanio;
    }

    public void setTamanio(Double tamanio) {
        this.tamanio = tamanio;
    }

    public String getPersonas() {
        return personas;
    }

    public void setPersonas(String personas) {
        this.personas = personas;
    }

    public String getTags() {
        return tags;
    }

    public void setTags(String tags) {
        this.tags = tags;
    }

    public boolean isDescargada() {
        return descargada;
    }

    public void setDescargada(boolean descargada) {
        this.descargada = descargada;
    }

    public String getTipo() {
        return tipo;
    }

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }

    public String getAfinidad() {
        return afinidad;
    }

    public void setAfinidad(String afinidad) {
        this.afinidad = afinidad;
    }
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (userId != null ? userId.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Foto)) {
            return false;
        }
        Foto other = (Foto) object;
        if ((this.userId == null && other.userId != null) || (this.userId != null && !this.userId.equals(other.userId))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "social.p2p.model.Foto[ userId=" + userId + " ]";
    }
}
